#@Time : 2021/10/2217:47
#@Author : xujian


# Question
# 如果列表a表示10点到12点的每一分钟的气温,
# 如何绘制折线图观察每分钟气温的变化情况?
# a = [random.randint(20, 35) for i in range(120)]

# random.randint(a,b)是说在a到b中随机生成一个整型数值
#randint   翻译 ： 产生均匀分布的随机整数矩阵
import random
from matplotlib import pyplot as plt
import matplotlib
from matplotlib import font_manager


my_font=font_manager.FontProperties(fname=r'C:\Windows\Fonts\STXINGKA.TTF')



#设置x轴y轴的范围
x=range(0,120)
y=[random.randint(20,36) for i in range(120)]

# matplotlib会自动进行坐标轴的每一格的划分


#设置图片的大小和dpi
plt.figure(figsize=(50,30),dpi=80)



#画图
plt.plot(x,y)

#设置xy的尺度(不是必要流程，看情况加入)
# xticks_len=[range(0,120,10)]
# yticks_len=[range(min(y),max(y)+5,3)]
# plt.xticks(xticks_len)
# plt.yticks(yticks_len)



# =======================1===========================
# #问题是：如果x轴想要些字符串（例如：几点几分、类别）  需要利用xticks方法的其他参数
# # （1）我们先将坐标轴上加上hello
#
# #这句代码的作用是：（list可以再创建x的时候加上）让x通过切片实现x轴上元素的跳跃间隔
# _x=list(x)[::10]
# #format是格式化  str.format()
# xticks_lab=['hello,{}'.format(i) for i in _x]
# #这里的两个参数我们需要说明一下，前一个与后一个是一一对应关系。
# #例如：x轴上hello1的位置应该原本是1的位置，这里的hello1就是xticks_lab，_x就是指1
# plt.xticks(_x,xticks_lab)

#===========================================================================

# =======================2===========================
#现在面临的问题：将x轴表示为几点几分：例如：10点20分

#调整x轴的刻度
_x=list(x)
#从10点至11点
xticks_lab = ['10点{}分'.format(i) for i in range(60)]
#从11点至12点
xticks_lab += ['11点{}分'.format(i) for i in range(60)]

#关于调用xticks方法  注意参数要一一对应（步长一致）
# 也就是所谓的数字与字符串一一对应，数据的长度一样，否则不能完全覆盖整个轴
# 我们在这增加一下x轴显示的一个形式（旋转）  rotation:旋转，转动
#rotation :正负都可以
plt.xticks(_x[::3],xticks_lab[::3],rotation=45,fontproperties=my_font)
#===========================================================================


#============================字体设置========================================

#此时又遇见中文不见得问题  ： matplotlib默认不显示中文
# 那么问题来了:如何修改matplotlib的默认字体?
#    （1）通过matplotlib.rc可以修改,具体方法参见源码(windows/linux)
# 	 （2）通过matplotlib 下的font_manager下的类FontProperties可以解决(windows/linux/mac)



#方法1(导包)  看看源码（复制粘贴）-----》行不通

# font = {'family': 'monospace',
#         'weight': 'bold',
#         'size': 'larger'}
# #**font其实就是解包
# matplotlib.rc('font',**font)


#方法2：   我电脑字体的路径：  C:\Windows\Fonts
#参数名字为fname  ----->  字体需要声明在前，因为xticks的参数fontproperties需要使用
# my_font=font_manager.FontProperties(fname='C:\Windows\Fonts\HGBKHX_CNKI.ttf')
#===========================================================================

#添加描述信息方法： (1)标题：title  (2)xlabelx轴含义    （3）ylabely轴含义
plt.xlabel('时间',fontproperties=my_font,size=20)
plt.ylabel('温度',fontproperties=my_font,size=20)
plt.title('某地10点至12点的温度变化图',fontproperties=my_font,size=30)




#展示
plt.show()












